/* *
*观察者模式是一种行为型设计模式，它定义了一种一对多的依赖关系，使得多个观察者对象可以同时监听某一个主题对象，当主题对象发生变化时，它会自动通知所有的观察者对象，从而使它们能够及时进行响应。
*在前端开发中，观察者模式被广泛应用于实现各种事件机制。在观察者模式中，有三个主要角色：
*主题（Subject）：负责维护一个观察者列表，以及提供用于添加、删除和通知观察者的方法。
*观察者（Observer）：定义了一个更新接口，用于在主题状态发生变化时被调用。每个观察者对象都必须实现这个更新接口。
*具体观察者（Concrete Observer）：实现了观察者接口，保存了一个对主题对象的引用，可以在主题状态发生变化时更新自身状态。
* */


class Subject{
    constructor() {
        this.observerList = []
    }
    add(observer) {
        this.observerList.push(observer)
    }
    del(observer) {
        if (!this.observerList.includes(observer)) {
            return -1
        }
        this.observerList.splice(this.observerList.indexOf(observer),1)
    }
    notify() {
        this.observerList.forEach(observe => {
            observe.update()
        })
    }

}
class Observer{
    constructor(msg) {
        this.msg = msg
    }
    update() {
        console.log(this.msg)
    }
}
const ob1 = new Observer("观察者1")
const ob2 = new Observer("观察者2")
const sub = new Subject()
sub.add(ob1)
sub.add(ob2)
sub.notify()
sub.del(ob1)
sub.notify()

